﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.Security;
using System.Web.Caching;
using System.Text;

namespace BeniBastanYaratProject
{
    public partial class Main : System.Web.UI.MasterPage
    {
        DBBaglantiDataContext db = new DBBaglantiDataContext();
        public string KategoriListeTutucu
        {
            get
            {
                return Cache["KategoriListesi"].ToString();
            }
            set
            {
                SqlCacheDependency sqd = new SqlCacheDependency("sqlDenetleyici", "Kategoriler");
                Cache.Insert("KategoriListesi", value, sqd, DateTime.Now.AddYears(1), Cache.NoSlidingExpiration);
            }
        }
        protected void page_load(object sender, EventArgs e)
        {

            if (Page.IsPostBack)
            {
                return;
            }
            if (Cache["KategoriListesi"] == null)
            {
                KategoriListeTutucu = KategorileriDoldur();
            }
            ltrKategoriler.Text = KategoriListeTutucu;
            SepetHesapla();
        }
        StringBuilder sb = new StringBuilder();
        private string KategorileriDoldur()
        {
            sb.Append("<ul>");
            var AnaKategoriler = (from x in db.Kategorilers where x.UstKategoriID == null select x).ToList();
            if (AnaKategoriler != null)
            {
                foreach (var AnaKat in AnaKategoriler)
                {
                    var AltKategoriler = (from x in db.Kategorilers where x.UstKategoriID == AnaKat.KategoriID select x).ToList();
                    if (AnaKategoriler == null)
                    {
                        sb.Append(String.Format("<li><a href=\"KategoriDetay.aspx?kid={0}\">{1}</a></li>", AnaKat.KategoriID, AnaKat.KategoriAdi));
                    }
                    else
                    {
                        sb.Append(String.Format("<li><a href=\"KategoriDetay.aspx?kid={0}\">{1}</a>", AnaKat.KategoriID, AnaKat.KategoriAdi));
                        AltKatDoldur(AltKategoriler);
                        sb.Append("</li>");
                    }
                }
            }
            sb.Append("</ul>");
            return sb.ToString();
        }

        void AltKatDoldur(List<Kategoriler> AltKategoriler)
        {
            sb.Append("<ul>");
            foreach (var AltKat in AltKategoriler)
            {

                var AltKategoriler2 = (from x in db.Kategorilers where x.UstKategoriID == AltKat.KategoriID select x).ToList();
                if (AltKategoriler2.Count == 0)
                {
                    sb.Append(String.Format("<li><a href=\"KategoriDetay.aspx?kid={0}\">{1}</a></li>", AltKat.KategoriID, AltKat.KategoriAdi));
                }
                else
                {
                    sb.Append(String.Format("<li><a href=\"KategoriDetay.aspx?kid={0}\">{1}</a>", AltKat.KategoriID, AltKat.KategoriAdi));
                    AltKatDoldur(AltKategoriler2);
                    sb.Append("</li>");
                }

            }
            sb.Append("</ul>");


        }

        public void SepetHesapla()
        {
            if (Membership.GetUser() != null)
            {
                var sorgu = (from x in db.SepetDetaylaris where x.Sepet.UserID == new Guid(Membership.GetUser().ProviderUserKey.ToString()) && x.Sepet.SepetAktifMi == true select new { x.Urunler.UrunID, x.Adet, x.Urunler.UrunSatisFiyati }).ToList();
                decimal toplamFiyat = 0;
                int ToplamParcaSayisi = 0;
                int ToplamUrunSayisi = 0;
                foreach (var item in sorgu)
                {
                    toplamFiyat += item.UrunSatisFiyati * item.Adet;
                    ToplamUrunSayisi++;
                    ToplamParcaSayisi += item.Adet;
                }
                (LoginView2.FindControl("ltrParcaSayisi") as Literal).Text = ToplamParcaSayisi.ToString();
                (LoginView2.FindControl("ltrUrunSayisi") as Literal).Text = ToplamUrunSayisi.ToString();
                (LoginView2.FindControl("ltrUrunFiyatToplam") as Literal).Text = toplamFiyat.ToString("C");
            }
        }
    }
}